package com.veo.config;

import ch.qos.logback.core.db.DBHelper;
import com.veo.bean.Car;
import com.veo.bean.Pet;
import com.veo.bean.User;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.ImportResource;

//这是一个配置类，并加入IOC容器，proxyBeanMethods 为true 则下面的配置如果依赖其他bean对象就先从IOC里面找，这时速度会降低，为false,就当做方法调用每次new为不同的对象
@Configuration(proxyBeanMethods = false)
//注入对象到IOC容器
@Import({User.class, DBHelper.class})
@EnableConfigurationProperties(Car.class)
//1、开启Car配置绑定功能
//2、把这个Car这个组件自动注册到容器中
@ConditionalOnMissingBean(name = "tom")
//导入配置文件的资源
@ImportResource(locations = "classpath:bean.xml")
public class MyConfig {

    @Bean("tom")
    //注入IOC容器并指定名字为tom
    public Pet tomcat01(){
        return new Pet("小花",21);
    }

//    @ConditionalOnMissingBean(name = "tom")
    //条件判断是否有这个bean,注意注入的顺序，要在pet的下面
    @Bean
    //bean为容器注册一个bean对，id为方法名，type：方法返回值，属性：返回的对象的值
    public User user01(){
        User user = new User("张三","男");
        user.setPet(tomcat01());
        return user;
    }

}
